package com.seeyon.apps.kkSample.fieldCtrl;

import com.seeyon.cap4.form.bean.*;
import com.seeyon.cap4.form.bean.fieldCtrl.FormFieldCustomCtrl;
import com.seeyon.cap4.form.modules.importandexport.BusinessDataBean;
import com.seeyon.cap4.form.util.Enums;
import com.seeyon.ctp.common.log.CtpLogFactory;
import org.apache.commons.logging.Log;

import java.util.List;
import java.util.Map;

/**
 * @Author: L
 * @Description: e签宝电子签章控件
 * @Date: 创建于10:18 2022-10-24
 **/
public class KKESignFieldCtrl extends FormFieldCustomCtrl {

    private static final Log LOG = CtpLogFactory.getLog(KKESignFieldCtrl.class);

    /**
     * 自定义控件的id
     *
     * @return
     */
    @Override
    public String getKey() {
        return "6255379057620178484";
    }

    /**
     * 自定义控件的名称
     *
     * @return
     */
    @Override
    public String getText() {
        return "E签宝电子签章";
    }

    @Override
    public boolean isValid() {
        return true;
    }

    /**
     * 自定义控件是否支持批量刷新
     *
     * @return
     */
    @Override
    public boolean canBathUpdate() {
        return false;
    }

    /**
     * 是否是附件类控件
     *
     * @return
     */
    @Override
    public boolean isAttachment() {
        return false;
    }


    /**
     * 表单转文档控件另存为实现接口
     *
     * @param fieldBean
     * @param formBean
     * @param mapping
     */
    @Override
    public void otherSave(FormFieldBean fieldBean, FormBean formBean, FormSaveAsBean mapping) {

    }

    @Override
    public boolean authNotNullAndValIsNull(FormDataMasterBean formDataMasterBean, FormFieldBean field, FormAuthViewFieldBean authViewFieldBean, Object val) {
        return false;
    }

    @Override
    public List<String[]> getListShowDefaultVal(Integer externalType) {
        return null;
    }

    @Override
    public String[] getDefaultVal(String defaultValue) {
        return new String[0];
    }

    /**
     * 定义控件是否能参与明细表，默认支持，如果不支持重写此方法返回false
     *
     * @return
     */
    @Override
    public boolean canInSubTable() {
        return false;
    }

    /**
     * 是否支持套红
     *
     * @return
     */
    @Override
    public boolean canInjectionWord() {
        return false;
    }

    /**
     * 初始化方法，定义插件id、图标及属性
     */
    @Override
    public void init() {
        try {
            LOG.info("自定义控件" + this.getText() + "init执行开始");
            this.setPluginId("kkESignFieldCtrl");//控件所属插件id
            this.setIcon("cap-icon-form-to-document");//控件图标样式
            LOG.info("自定义控件" + this.getText() + "init执行结束");
            ParamDefinition mappingDefinition = new ParamDefinition();
            mappingDefinition.setDialogUrl("eSign.do");
            mappingDefinition.setDialogTitle("配置参数");
            mappingDefinition.setDisplay("配置参数");
            mappingDefinition.setName("mapping");
            mappingDefinition.setParamType(Enums.ParamType.button);
            addDefinition(mappingDefinition);
            LOG.info("自定义控件" + this.getText() + "init执行结束，params.size:" + super.params.size());
        } catch (Exception e) {
            LOG.error("E签宝电子签章init执行异常", e);
        }
    }

    /**
     * PC端运行态资源注入信息
     *
     * @return
     */
    @Override
    public String getPCInjectionInfo() {
        return "{path:'apps_res/cap/customCtrlResources/kkEsign/',jsUri:'js/eSignPcRunning.js',initMethod:'init',nameSpace:'field_" + this.getKey() + "'}";
    }

    /**
     * 移动端及H5端运行态资源注入信息
     *
     * @return
     */
    @Override
    public String getMBInjectionInfo() {
        return null;
    }

    /**
     * 控件对应数据库所需长度
     *
     * @return
     */
    @Override
    public String getFieldLength() {
        return "20";
    }

    /**
     * 导出的扩展接口，自定义控件用，有需要的重写该方法
     *
     * @param formBean         当前表单
     * @param formFieldBean    当前字段
     * @param businessDataBean 导出中间对象，如果有附件，可以放到对象中的unifiedExportAttachment中
     * @param resultMap        字段json
     */
    @Override
    public void getJson4Export(FormBean formBean, FormFieldBean formFieldBean, BusinessDataBean businessDataBean, Map<String, Object> resultMap) {

    }

    /**
     * 导入的时候处理自定义控件的扩展信息，自行重写接口来实现逻辑
     *
     * @param formBean         当前表单
     * @param formFieldBean    当前字段
     * @param businessDataBean 导入中间对象
     * @param fieldInfo        字段信息
     */
    @Override
    public void importExtInfo(FormBean formBean, FormFieldBean formFieldBean, BusinessDataBean businessDataBean, Map<String, Object> fieldInfo) {

    }
}
